﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Libreria.SICOM.Negocio;
using Libreria.SICOM.Modelo;
using System.Configuration;
using Web.SICOM.Models;

namespace Web.SICOM.Controllers
{
    public class DetalledeEquipoController : Controller
    {
        //
        // GET: /DetalledeEquipo/
        
        public ActionResult Index()

        {

            if (Session["Autenticado"] != "True")
            {
                return RedirectToAction("Index", "Inicio");
            }
            DetalledeEquipoModelo modelo = new DetalledeEquipoModelo();

            DetalledeEquipoNegocio detequipobo = new DetalledeEquipoNegocio();
            EquipodeMedicionNegocio equipobo = new EquipodeMedicionNegocio();

            modelo.detallesdeequipos = detequipobo.consultarDetalledeEquipo(ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString);
            modelo.equipos= equipobo.consultarEquiposdeMedicion(ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString);

            ViewData.Model = modelo;

            if (((DetalledeEquipoModelo)ViewData.Model).detallesdeequipos.Count == 0)
            {
                if (((DetalledeEquipoModelo)ViewData.Model).equipos.Count == 0)
                {
                    ViewData.Model = "No Hay Datos de equipos de medicion Asociados";
                }
                ViewData.Model = "No Hay Datos de detalles de equipos Asociados";
            }
            return View();
        }

       
        public ActionResult Crear()
        {

            if (Session["Autenticado"] != "True")
            {
                return RedirectToAction("Index", "Inicio");
            }
            DetalledeEquipoModelo modelo = new DetalledeEquipoModelo();
            EquipodeMedicionNegocio equipobo = new EquipodeMedicionNegocio();
            modelo.equipos = equipobo.consultarEquiposdeMedicion(ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString);
            ViewData.Model = modelo;
            if (((DetalledeEquipoModelo)ViewData.Model).equipos.Count == 0)
            {
                ViewData.Model = "No Hay Datos de equipos de medicion Asociados";
            }

            return View();
        }

        
       [AcceptVerbs(HttpVerbs.Post)]
       public ActionResult Insertar(DetalledeEquipo detalledeequipo)
       {
           String cdc = ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString;
           List<DetalledeEquipo> detalle = new DetalledeEquipoNegocio().consultarDetalledeEquipo(cdc);
           for (int i = 0; i <= detalle.Count - 1; i++)
           {
               if (detalle[i].Identificador == detalledeequipo.Identificador)
               {
                   ModelState.AddModelError("Identificador", "***El Equipo de Medicion ya tiene un detalle asociado***");
               }
               if (detalle[i].Mac == detalledeequipo.Mac)
               {
                   ModelState.AddModelError("Mac", "***La Mac especificada ya se encuentra en uso***");
               }
           }
           
           if (detalledeequipo.Identificador == 0)
           {
               ModelState.AddModelError("Identificador", "***El equipo de medicion no ha sido especificado***");
           }

           if (!ModelState.IsValid)
           {
               DetalledeEquipoModelo modelo = new DetalledeEquipoModelo();
               EquipodeMedicionNegocio equipobo = new EquipodeMedicionNegocio();
               modelo.equipos = equipobo.consultarEquiposdeMedicion(ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString);
               ViewData.Model = modelo;
               return View("Crear", ViewData.Model);
           }
 
           Int32? id = detalledeequipo.Identificador;
           DateTime fechainstal = detalledeequipo.Fechadeinstalacion;
           String mac = detalledeequipo.Mac;
           new DetalledeEquipoNegocio().crearDetalledeEquipo(id,fechainstal,mac, ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString);
           return RedirectToAction("Index");
       }

       public ActionResult Editar(Int32? id)
       {
           if (Session["Autenticado"] != "True")
           {
               return RedirectToAction("Index", "Inicio");
           }

           DetalledeEquipoModelo modelo = new DetalledeEquipoModelo();

           DetalledeEquipoNegocio detallebo = new DetalledeEquipoNegocio();
           EquipodeMedicionNegocio equipobo = new EquipodeMedicionNegocio();

           modelo.detalledeequipo =detallebo.ConsultarPorIdentificador(id, ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString);
           modelo.equipos = equipobo.consultarEquiposdeMedicion(ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString);

           ViewData.Model = modelo;

           return View();
       }
        
       [AcceptVerbs(HttpVerbs.Post)]
       public ActionResult Actualizar(DetalledeEquipo detalledeequipo)
       {
           String cdc = ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString;
          
           if (!ModelState.IsValid)
           {
               DetalledeEquipoModelo modelo = new DetalledeEquipoModelo();

               DetalledeEquipoNegocio detallebo = new DetalledeEquipoNegocio();
               EquipodeMedicionNegocio equipobo = new EquipodeMedicionNegocio();

               modelo.detalledeequipo = detalledeequipo;
               modelo.equipos = equipobo.consultarEquiposdeMedicion(ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString);

               ViewData.Model = modelo;

               return View("Editar", ViewData.Model);
           }
           
           Int32? id = detalledeequipo.Identificador;
           DateTime fechainstal = detalledeequipo.Fechadeinstalacion;
           String mac = detalledeequipo.Mac;
           new DetalledeEquipoNegocio().actualizarDetalledeEquipo(id,fechainstal,mac,cdc);
           return RedirectToAction("Index");
       }


       public ActionResult Eliminar(Int32? id)
       {

           if (Session["Autenticado"] != "True")
           {
               return RedirectToAction("Index", "Inicio");
           }

           
           new DetalledeEquipoNegocio().eliminarDetalledeEquipo(id, ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString);
           return RedirectToAction("Index");
       }
       

    }
}
